package com.touchstone.cloudpacs.enums;

import com.touchstone.cloudpacs.common.exception.BusinessException;
import com.touchstone.cloudpacs.common.utils.dto.OptionDTO;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;

import java.util.ArrayList;
import java.util.List;

/**
 * @Description: 状态枚举类
 * @Author: hunter
 * @Date:2019-07-10 15:27
 */
@AllArgsConstructor
public enum StatusEnum {

    /**
     * 启用
     */
    NORMAL(1, "启用"),

    /**
     * 禁用，删除
     */
    DISABLED(-1, "禁用");

    /**
     * 状态编码
     */
    @Setter
    @Getter
    private Integer code;

    /**
     * 状态说明
     */
    @Setter
    @Getter
    private String description;

    /**
     * 状态列表
     */
    private static List<OptionDTO> optionDTOList = new ArrayList<>(StatusEnum.values().length);

    static {
        OptionDTO optionDTO;
        for (StatusEnum statusEnum : StatusEnum.values()) {
            optionDTO = new OptionDTO();
            optionDTO.setItemValue(statusEnum.code);
            optionDTO.setItemText(statusEnum.description);
            optionDTOList.add(optionDTO);
        }
    }

    /**
     * @param
     * @return
     * @description 返回状态列表
     * @author hunter
     * @date 2019/7/10 0010 15:56
     **/
    public static List<OptionDTO> getOptionDTOList() {
        return optionDTOList;
    }

    /**
     * @param code 状态码
     * @return
     * @description 根据状态码返回状态描述
     * @author hunter
     * @date 2019/7/10 0010 16:03
     **/
    public String getDescription(Integer code) {
        if (code == null) {
            throw new BusinessException("状态码不能为空");
        }
        String description = "";
        for (StatusEnum statusEnum : StatusEnum.values()) {
            if (code.equals(statusEnum.code)) {
                description = statusEnum.description;
            }
        }
        return description;
    }


}
